Sentiment Analysis এবং Text Classification

Machine Learning - পাইটর্চ (Pytorch) - Natural Language Processing (NLP) এবং PyTorch
263

Sentiment Analysis এবং Text Classification দুটি গুরুত্বপূর্ণ প্রাকৃতিক ভাষা প্রক্রিয়াকরণ (NLP) টাস্ক যা টেক্সট ডেটার সাথে কাজ করার সময় ব্যাপকভাবে ব্যবহৃত হয়। এগুলির মূল উদ্দেশ্য হল টেক্সট ডেটার মধ্যে গোপন তথ্য বিশ্লেষণ এবং শ্রেণীবদ্ধকরণ করা।


১. Sentiment Analysis (সেন্টিমেন্ট অ্যানালাইসিস)

Sentiment Analysis হল একটি Text Classification টাস্ক যেখানে টেক্সটের একটি অংশের সেন্টিমেন্ট বা আবেগ চিহ্নিত করা হয়। সাধারণত এটি ইতিবাচক, নেতিবাচক, এবং নিরপেক্ষ হিসেবে শ্রেণীবদ্ধ করা হয়। এটি ব্যবসা, সোশ্যাল মিডিয়া মনিটরিং, রিভিউ বিশ্লেষণ, এবং কাস্টমার সাপোর্ট ব্যবস্থাপনায় ব্যবহৃত হয়।

Sentiment Analysis এর উদ্দেশ্য:

  • একটি টেক্সটের মধ্যে যে আবেগ বা মনোভাব আছে, সেটা চিহ্নিত করা। উদাহরণস্বরূপ, একটি ফিল্ম রিভিউ যদি "এটি একটি দারুণ সিনেমা ছিল" হয়, তবে সেন্টিমেন্ট হবে ইতিবাচক (Positive)। আবার, "এই সিনেমাটি অনেক খারাপ ছিল" হলে সেন্টিমেন্ট হবে নেতিবাচক (Negative)

Sentiment Analysis এর প্রক্রিয়া:

  1. টেক্সট প্রিপ্রসেসিং:
    • Tokenization: শব্দ বা সাব-ওয়ার্ডে টেক্সটকে ভাগ করা।
    • Stop Words Removal: অনাবশ্যক শব্দগুলো (যেমন: "the", "is", "a") বাদ দেওয়া।
    • Stemming / Lemmatization: শব্দের মূল রূপে রূপান্তর করা।
  2. টেক্সট ভেক্টরাইজেশন:
    • Bag of Words (BoW), TF-IDF বা Word Embedding (যেমন Word2Vec, GloVe) ব্যবহার করে টেক্সটকে সংখ্যায় রূপান্তর করা।
  3. মডেল প্রশিক্ষণ:
    • বিভিন্ন মডেল যেমন Naive Bayes, SVM, LSTM, BERT, বা Transformer-based models ব্যবহার করা হয় সেন্টিমেন্ট অ্যানালাইসিসের জন্য।

Python এ Sentiment Analysis উদাহরণ:

এখানে PyTorch এবং HuggingFace Transformers ব্যবহার করে একটি বেসিক Sentiment Analysis মডেল তৈরির উদাহরণ দেওয়া হলো।

from transformers import pipeline

# HuggingFace থেকে Pretrained Sentiment Analysis Pipeline ব্যবহার
sentiment_analyzer = pipeline('sentiment-analysis')

# টেক্সট ইনপুট
text = "I love this movie! It's amazing."

# প্রেডিকশন
result = sentiment_analyzer(text)

print(result)  # [{'label': 'POSITIVE', 'score': 0.9998}]

এটি একটি BERT ভিত্তিক মডেল ব্যবহার করে সেন্টিমেন্ট বিশ্লেষণ করে এবং প্রেডিকশন হিসেবে POSITIVE বা NEGATIVE সেন্টিমেন্ট প্রদান করে।


২. Text Classification (টেক্সট ক্লাসিফিকেশন)

Text Classification হল একটি মেশিন লার্নিং টাস্ক যেখানে টেক্সট ডেটাকে বিভিন্ন ক্লাস বা ক্যাটেগরিতে শ্রেণীবদ্ধ করা হয়। এটি একটি সাধারণ NLP টাস্ক যা বিভিন্ন প্রকার ডেটাতে ব্যবহৃত হয়, যেমন স্প্যাম ডিটেকশন, টপিক মডেলিং, এমেইল ক্লাসিফিকেশন, নিউজ ক্লাসিফিকেশন ইত্যাদি।

Text Classification এর উদ্দেশ্য:

  • একাধিক ক্লাসে টেক্সট ডেটাকে শ্রেণীভুক্ত করা। উদাহরণস্বরূপ:
    • স্প্যাম বা নন-স্প্যাম (স্প্যাম ডিটেকশন)
    • রাজনীতি, খেলা, বিজ্ঞান (নিউজ ক্লাসিফিকেশন)

Text Classification এর প্রক্রিয়া:

  1. টেক্সট প্রিপ্রসেসিং:
    • টেক্সটকে টোকেনাইজেশন, স্টপওয়ার্ড রিমুভাল, এবং স্টেমিং/লেম্যাটাইজেশন এর মাধ্যমে প্রিপ্রসেস করা হয়।
  2. ভেক্টরাইজেশন:
    • টেক্সটকে Bag of Words (BoW), TF-IDF, বা Word Embeddings এর মাধ্যমে সংখ্যায় রূপান্তর করা হয়।
  3. মডেল প্রশিক্ষণ:
    • Naive Bayes, Logistic Regression, SVM, LSTM, বা Transformer-based models (যেমন BERT, RoBERTa) ব্যবহার করা হয়।

Text Classification এর উদাহরণ:

import torch
from torch import nn
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics import accuracy_score

# উদাহরণ ডেটাসেট
texts = ["I love programming", "This movie is awesome", "I hate waiting", "Worst experience ever", "Best game ever"]
labels = [1, 1, 0, 0, 1]  # 1 = Positive, 0 = Negative

# TF-IDF ভেক্টরাইজেশন
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(texts)
y = labels

# ডেটা ট্রেন এবং টেস্টে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Logistic Regression মডেল
from sklearn.linear_model import LogisticRegression

model = LogisticRegression()
model.fit(X_train, y_train)

# প্রেডিকশন এবং একিউরেসি
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)

print(f"Accuracy: {accuracy * 100}%")

এখানে TF-IDF ব্যবহার করে টেক্সট ভেক্টরাইজ করা হয়েছে এবং Logistic Regression মডেল দিয়ে ক্লাসিফিকেশন করা হয়েছে।


Sentiment Analysis এবং Text Classification এর মধ্যে পার্থক্য

পার্থক্যSentiment AnalysisText Classification
লক্ষ্যটেক্সটের আবেগ বা সেন্টিমেন্ট চিহ্নিত করা (ইতিবাচক, নেতিবাচক)টেক্সটকে নির্দিষ্ট শ্রেণিতে বিভক্ত করা (যেমন, স্প্যাম বা নন-স্প্যাম)
ক্লাসসাধারণত দুটি (ইতিবাচক/নেতিবাচক)একাধিক শ্রেণী হতে পারে (স্প্যাম, স্প্যাম নয়)
ব্যবহারসোশ্যাল মিডিয়া মনিটরিং, রিভিউ বিশ্লেষণ, কাস্টমার ফিডব্যাকস্প্যাম ডিটেকশন, টপিক মডেলিং, নিউজ শ্রেণীবিভাগ

উপসংহার

  • Sentiment Analysis এবং Text Classification উভয়ই NLP এর গুরুত্বপূর্ণ টাস্ক, কিন্তু তাদের উদ্দেশ্য এবং প্রয়োগ আলাদা।
  • Sentiment Analysis সাধারণত দুইটি শ্রেণীতে (ইতিবাচক/নেতিবাচক) টেক্সট শ্রেণীবদ্ধ করে, যখন Text Classification অধিক সংখ্যক শ্রেণী ব্যবহার করে।
  • PyTorch, HuggingFace, এবং অন্যান্য জনপ্রিয় লাইব্রেরি ব্যবহার করে সহজেই এই টাস্কগুলো সম্পন্ন করা যায়।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...